package junyi.player;

import junyi.SSAKObject;
import junyi.card.Card;
import junyi.card.Function;
import junyi.card.FunctionModifier;

import java.util.List;

/**
 * User: Junyi BEI
 * Date: 12-9-30
 * Time: 下午1:52
 */
public abstract class Player extends SSAKObject {
  private List<Card> curse;
  private List<Card> items;
  private List<Card> hand;
  private Health health;
  private Gender gender;

  public abstract FunctionModifier functionSourceCheck(Function f, SSAKObject... o);

  public abstract FunctionModifier functionTargetCheck(Function f, SSAKObject... o);

  public PlayerProperty getPlayerProperty(Class<? extends PlayerProperty> c) {
    if(c == Health.class) {
      return health;
    }
    if(c == Gender.class) {
      return gender;
    }
    return null;
  }

  public List<Card> getCurse() {
    return curse;
  }

  public List<Card> getItems() {
    return items;
  }

  public List<Card> getHand() {
    return hand;
  }

  public Health getHealth() {
    return health;
  }

  public Gender getGender() {
    return gender;
  }
  
  public int pickObject(List<? extends SSAKObject> os) {
    return 0;
  }

  public int removeObject(List<? extends SSAKObject> os) {
    return 0;
  }
}
